
import { customRef } from "vue";

export default function (initValue: string, delay: number = 1000) {

    let timer: number
    let message = customRef((track, trigger) => {
        return {
            // 何时调用？ message 被读取时 会被调用
            get() {
                // console.log('get ....')
                //调用 track ，告诉Vue,  message 很重要，你要对message 进行持续关注，一旦 message 变化 就去更新
                track()
                return initValue
            },
            //何时调用？  message 被修改时 会被调用
            set(value) {
                clearTimeout(timer)
                timer = setTimeout(() => {
                    // console.log('set ', value)
                    // 修改数据
                    initValue = value

                    // 最后调用 trigger, 通知Vue一下数据已经变化了
                    trigger()
                }, delay);
            }
        }
    })

    // 这里要 return 出去
    return { message }
}